#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QTcpSocket>
#include <QByteArray>
#include <qcombobox.h>
#include <QtSerialPort/QSerialPort>
#include <QtSerialPort/QSerialPortInfo>
#include <QThread>

#include "serialthread.h"
#include "td4550serialthread.h"
#include "td3650clientthread.h"

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT



public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    int 工位状态[3];
    int 开启线程表[4];
    int 校准步骤表[4];
    int 使用的源;
    QTimer *timer步骤,*timer2;
    int 校准步骤;
    int 不让重复发=0;

    TD4550SerialThread *SerialTh_4550;
    QThread *thread_4550;

    TD3650ClientThread *ClientTh_3650;
    QThread *thread_3650;

    QThread *thread_NO1;
    QThread *thread_NO2;
    QThread *thread_NO3;
    SerialThread *SerialTh_NO1;
    SerialThread *SerialTh_NO2;
    SerialThread *SerialTh_NO3;





private:
    void 查找可用的串口(QComboBox *下拉框);
    bool 检查型号及串口();
    void 使用TD4550校准(QString 仪器串口,QString 塑壳串口,QString 塑壳型号);
    void 使用TD3650校准(QString IP地址,int IP端口);


signals:
    void sendConj4550(QString comNo,QList<int> comConj);
    void sendConj3650(QString IP地址,int IP端口);
    void sendConj_NO1(QString 塑壳串口,QString 塑壳型号,QList<int> comConj_NO,int 工位);
    void sendConj_NO2(QString 塑壳串口,QString 塑壳型号,QList<int> comConj_NO,int 工位);
    void sendConj_NO3(QString 塑壳串口,QString 塑壳型号,QList<int> comConj_NO,int 工位);
    void calibrate_NO1(int 步骤);
    void calibrate_NO2(int 步骤);
    void calibrate_NO3(int 步骤);
    void calibrate_TD4550(int 步骤);
    void calibrate_TD3650(int 步骤);
    void _校准步骤分发信号();


private slots:
    void TD4550State(QString 错误信息,bool 错误码, int 状态码);
    void TD3650State(QString 错误信息,bool 错误码, int 状态码);
    void SimpleState_1(QString 错误信息,bool 错误码, int 状态码);
    void SimpleState_2(QString 错误信息,bool 错误码, int 状态码);
    void SimpleState_3(QString 错误信息,bool 错误码, int 状态码);
    void _校准步骤分发();


    void on_radioB_4550_clicked(bool checked);

    void on_radioB_3650_clicked(bool checked);

    void on_pButt_startC_clicked();

    void on_checkBox_NO1_clicked(bool checked);

    void on_checkBox_NO2_clicked(bool checked);

    void on_checkBox_NO3_clicked(bool checked);

private:
    bool 已连接;
    QTcpSocket * server;

private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
